# handle_excel
# 2024/10/18
# author:www
import xlrd

'''
函数名：get_excel_data()
函数功能：
    1、获取请求的body,预期响应结果
    2、可以自定义获取对应列的数据
具体方案：
    1、导入对应的excel读取的库，xlrd处理xls格式；openpyxl处理xlsx格式；
    2、把excel中的内容读取到内存 excel对象
    3、找到需要操作的sheet表
    4、读取对应行列(单元格的数据)  
'''

def get_excel_data(excel_path, sheetName, case_NO,*args): # *args代表未知个数参数，传递几个就接收几个
    res_list = []
    workBook = xlrd.open_workbook(excel_path,formatting_info=True)
    workSheet = workBook.sheet_by_name(sheetName)  # 根据sheet名称查找表单
    '''
    4、参数化传递列名，获取对应列的内容（灵活获取列数据）
        方案：要想办法获取用户输入的名称在sheet表中对应的位置
    '''
    col_name_index = [] # 存放用户传递的列名称位置
    for i in args:  # 循环用户输入的列名称
        col_name_index.append(workSheet.row_values(0).index(i))  # 获取表单的第0行数据，index(i):i是用户输入的标题名称，整体是返回用户输入的列名在第0行的下标值
    print(col_name_index) # 输入下标值; 如：a.index(2) 返回的是列表中值为 2 的元素的索引，即 1。


    row_name_index = 0  # 代表起始行
    for row_no in workSheet.col_values(0): # 获取第一列的数据
        if case_NO in row_no:
            # 用户输入的用例名称在第一列找到了，满足条件，获取列的数据
            get_col_data = []
            for col_index in col_name_index:
                cell_data = workSheet.cell_value(row_name_index,col_index)
                get_col_data.append(cell_data)
                # 列通过用户传递
            res_list.append(get_col_data) # 将
        row_name_index += 1
    return res_list




if __name__ == '__main__':
    col_names = ['标题','请求方式']
    result = get_excel_data('../data/h_saas_testcase.xls', 'login', 'login', *col_names)
    for res in result:
        print(res)
